package com.jsbj.sms;

import com.alibaba.fastjson.JSONObject;
import com.jsbj.tools.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.io.*;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;

/**
 * @author
 * 网易云信短信核心类
 * @version 1.0
 */
@Slf4j
@Component("yunMiSms")
public class YunMiSms {
	private static String account="900211" ;
	private static String password="wke3Qc" ;
	private static String extno = "1069044572";

	/**
	 * @params content 短信内容
	 * @params mobiles 手机号码 '123,123'
	 * @return
	 */
	public static Map<String, String>  sendSms(String mobiles,String content, String sign){
		if (StringUtils.isEmpty(sign)) {
			sign = "【智慧工地】";
		}
		Map<String, String> rtnMap = new HashMap<String, String>();
		rtnMap.put("flag", "false");
		String Content;
		try {
			Content = java.net.URLEncoder.encode(sign + content, "UTF-8");
			String url = "http://39.100.81.225:7862/sms?action=send&account="+account+"&password="+password+"&mobile="+mobiles+"&content="+Content+"&extno="+extno+"&rt=json";

			String str = sendPost(url,"");//post发送
			JSONObject jsonObj = JSONObject.parseObject(str);
			String status = jsonObj.getString("status");
			if("0".equals(status)){
				rtnMap.put("flag", "true");
			}
			rtnMap.put("status", status);
		} catch (UnsupportedEncodingException e) {

		}
		return rtnMap;
	}

	/**
	 * 向指定 URL 发送POST方法的请求
	 *
	 * @param url 发送请求的 URL
	 * @param param 请求参数，请求参数应该是 name1=value1&name2=value2 的形式。
	 * @return 所代表远程资源的响应结果
	 */
	public static String sendPost(String url, String param)
	{
		PrintWriter out = null;
		BufferedReader in = null;
		StringBuilder result = new StringBuilder();
		try
		{
			String urlNameString = url;
			log.info("sendPost - {}", urlNameString);
			URL realUrl = new URL(urlNameString);
			URLConnection conn = realUrl.openConnection();
			conn.setRequestProperty("accept", "*/*");
			conn.setRequestProperty("connection", "Keep-Alive");
			conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
			conn.setRequestProperty("Accept-Charset", "utf-8");
			conn.setRequestProperty("contentType", "utf-8");
			conn.setDoOutput(true);
			conn.setDoInput(true);
			out = new PrintWriter(conn.getOutputStream());
			out.print(param);
			out.flush();
			in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
			String line;
			while ((line = in.readLine()) != null)
			{
				result.append(line);
			}
			log.info("recv - {}", result);
		}
		catch (ConnectException e)
		{
			log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
		}
		catch (SocketTimeoutException e)
		{
			log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
		}
		catch (IOException e)
		{
			log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
		}
		catch (Exception e)
		{
			log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
		}
		finally
		{
			try
			{
				if (out != null)
				{
					out.close();
				}
				if (in != null)
				{
					in.close();
				}
			}
			catch (IOException ex)
			{
				log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
			}
		}
		return result.toString();
	}




}
